#include "queue.h"

Queue* InitQueue()
{
	ListHead *q = NewListHead();
	return q;
}

void FreeQueue(Queue *q)
{
	if (q)
		FreeListHead(q);	
}

int IsEmpty(Queue *q)
{
	if (!q)
		return TRUE;
	if (q->NodeCnt == 0)
		return TRUE;
	else
		return FALSE;
}

int GetSize(Queue *q)
{
	if (!q)
		return 0;
	return q->NodeCnt;
}

int EnQueue(Queue *q, void *data)
{
	int ret = 0;
	if (!q)
		return	QUEUE_ERR_ARGNULL;

	ret = 	InsertDataBeTheFirst(q, data);
	return ret;
}

void* DeQueue(Queue *q)
{
	void *dataTemp = NULL;

	if (q && q->NodeCnt > 0) {
		dataTemp = q->last->data;
		DeleteListNode(q, q->last);
	}

	return dataTemp;
}

void ClearQueue(Queue *q)
{
	if (q) {
		while(q->NodeCnt > 0) {
			DeQueue(q);
		}
	}
}
